package Juego.vista;
import java.util.ArrayList;

import Juego.modelo.Batalla.Batalla;
import Juego.modelo.Terreno.Tierra.*;

import Juego.modelo.Unidad.Unidad;

public class MVCBatalla {
    public int X = 20;
    public int Y = 20;
    public int Z = 3;
    public Object mapaBatalla[][][] = new Object[X][Y][Z];
    public String [] terreno = new String[20];
    int [] x ;
    int [] y ;
    
    public void initMapa() {
        int cont = 0;
        x = new int[]{ 1  , 2,  3 , 4 , 5 };
        y = new int[]{ 1 ,  1 , 1 , 1  , 1 };
        for (int i = X-1; i >= 0; i--){
            terreno[cont] = "";
            for (int j = 0; j < Y; j++){
                if ( i==j )
                terreno[ cont ] += "/";
                else terreno[cont] += ".";
            }
            cont++;
        }
   
        for (int i = 0; i < X; i++) {
            for (int j = 0; j < Y; j++) {
                if( terreno[ i ].charAt( j ) == '/')
                    mapaBatalla[ i ][ j ][ 0 ] = new Muro();               
                else
                    mapaBatalla[ i ][ j ][ 0 ] = new Tierra();
                for (int k = 1; k < Z; k++) {
                    mapaBatalla[i][j][k] = null;
                }
            }
        }
   
    }
   
    public void imprimeMapa() {
        for (int i = 0; i < X; i++) {
            for (int j = 0; j < Y; j++) {
                if (mapaBatalla[i][j][2] == null  && mapaBatalla[i][j][1] == null ) {
                    dibujable A = (dibujable) mapaBatalla[ i ][ j ][ 0 ];
                    A.dibujar();                   
                   
                } else if (mapaBatalla[i][j][1] != null) {

                    dibujable A = (dibujable) mapaBatalla[ i ][ j ][ 1 ];
                    A.dibujar();
                }
                else{
                    dibujable A = (dibujable) mapaBatalla[ i ][ j ][ 2];
                    A.dibujar();

                }
            }
            System.out.println();
        }
    }
   /*
    public static void main(String[] args) {
        MVCBatalla bata = new MVCBatalla();
        bata.initMapa();
        bata.imprimeMapa();
    }*/

	public void dibujar(Batalla actual) {
		// TODO Auto-generated method stub
		ArrayList< Unidad > U = actual.ListaUsuario;
		initMapa();
		int j = 0;
		System.out.println( " Aliados " );
		for( int i = 0 ; i < U.size() ; i++ ){
			if( U.get( i ).getVida() == 0 ) continue;
			mapaBatalla[ x[ i ] ][ y[ i ] ][ 1 ] = U.get(i );
			System.out.println( ( int )( j +1 )+ ". " +x[ i ] + "," + y[ i ] + " " + U.get(i) );
			j++;
		}
		j = 0;
		System.out.println( " Enemigos " );
		ArrayList< Unidad > V = actual.ListaEnemigo;
		for( int i= 0 ; i < V.size() ; i++ ){
			if( V.get( i ).getVida() == 0 ) continue;
			mapaBatalla[ 19 - y[ i ] ][ 19 - x[ i ] ][ 1 ] = V.get(i );
			System.out.println( ( int )( j +1 )+ ". " +( 19 - y[ i ]) + "," + ( 19 - x[ i ]) + " " + V.get(i) );
			j++;
		}
		imprimeMapa();
		
	}   
       
}